/**
 * @description 自定义路由拦截
 */

import cookie from '@/utils/auth.js'
import { Jump, Toast } from './tools.js'
// 白名单
const whiteList = [
	'/', // 注意入口页必须直接写 '/'
	'/pages/pres', //过渡页
	'/pages/upgrade', //升级页面
	// '//pages/login/login', //升级页面
	'/pages/invite/invite',
	'/pages/news/newsDetail/newsDetail',
	'/pages/webview/Wechat', // H5 获取公众号openid
	{ pattern: /^\/pages\/login\/*/ },
	{ pattern: /^\/pages\/agreement\/*/ },
	{ pattern: /^\/pages\/error\/*/ },
	{ pattern: /^\/pages\/webview\/*/ },
]
export default async function() {
	const list = ['navigateTo', 'redirectTo', 'reLaunch', 'switchTab']
	// 用遍历的方式分别为,uni.navigateTo,uni.redirectTo,uni.reLaunch,uni.switchTab这4个路由方法添加拦截器
	try {
		list.forEach(item => {
			uni.addInterceptor(item, {
				invoke(e) {
					// 获取要跳转的页面路径（url去掉"?"和"?"后的参数）
					const url = e.url.split('?')[0]
					// 判断当前窗口是白名单，如果是则不重定向路由
					let pass;
					if (whiteList) {
						pass = whiteList.some((item) => {
							if (typeof(item) === 'object' && item.pattern) {
								return item.pattern.test(url)
							}
							return url === item
						})
					}
					if (!pass && !cookie.get('Token')) {
						// Jump({
						// 	url:'/pages/login/login',
						// 	mode:3
						// })
						Jump({
							url:'/pages/login/register/register',
							mode:3
						})
						return false
					}
					return e
				},
				fail(err) { // 失败回调拦截
					console.log('err',err)
				}
			})
		})
	} catch (e) {
		console.log('e',e);
		//TODO handle the exception
	}
}
